package Day019_Junit单元测试_NIO.demo3_Buffer类_缓冲区;

import java.nio.ByteBuffer;

/**
 * @author zhangyan
 * @date 2020/5/12 10:54
 */
public class Test5_限制limit {
    public static void main(String[] args) {
        /*
            限制limit是指：第一个不应该读取或写入元素的index索引。缓冲区的限制(limit)不能为负，并且不能大于容量

            有两个相关方法：
                    public int limit()：获取此缓冲区的限制。
                    public Buffer limit(int newLimit)：设置此缓冲区的限制
         */

        //创建ByteBuffer缓冲数组 容量为10
        ByteBuffer bb = ByteBuffer.allocate(10);

        //限制位置索引默认和容量一样
        System.out.println("缓冲数组容量为:" + bb.capacity() + "限制位置索引:" + bb.limit()); // 10  10

        //添加数据
        bb.put((byte)1);
        //不变
        System.out.println("缓冲数组容量为:" + bb.capacity() + "限制位置索引:" + bb.limit()); // 10  10

        //设置限制索引位置
        bb.limit(3);

        bb.put((byte)2);
        bb.put((byte)3);
        // bb.put((byte)4); //抛出异常,因为限制索引为3,该索引不能写入数据,所以添加4元素会出错
    }
}
